 class  Student{
    public String name;
    public int age;

    public Student(String name , int age) {
        this.name = name;
        this.age = age;
    }
}
public class Test02 {

    public static void main1(String[] args) {
        //转化

        //数字转化为字符串
        String s1 = String.valueOf(1234);
        String s2 = String.valueOf(12.34);
        String s3 = String.valueOf(true);

        //把对象转化成了 字符串的形式 -》序列化
        Student student = new Student("zhangsan",10);
        String s4 = String.valueOf(student);//输出地址

        //字符串转数字 Integer.parseInt(传入的字符,进制) 表示传入一份字符串判断是否是该进制 ， 如果是转化为 10 进制
        int data1 = Integer.parseInt("1234");
        double data2 = Double.parseDouble("12.34");
        System.out.println(data1);
        System.out.println(data2);
    }
    //要转的对象.toUpperCase() ,会返回一个对象需要一个变量去接收
    public static void main2(String[] args) {

        //字符串的大小写转化
        String str1 = "hello";
        String str2 = str1.toUpperCase();
        String str3 = str2.toLowerCase();
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
    }

    public static void main3(String[] args) {
        //字符串转数组 要转的对象.toCharArray() ,需要一个字符数组来接收
        String str1 = "hello";
        char[] str2 = str1.toCharArray();
//        for each
        for(char ch :str2){
            System.out.println(ch +" ");
        }
    }

    public static void main4(String[] args) {

        //格式化 String.format("%d-%d-%d",2025,3,24); 需要一个对象来接收结果
        String s = String.format("%d-%d-%d",2025,3,24);
        System.out.println(s);

    }

    public static void main5(String[] args) {
        //字符串的替换 要转的对象.replace(); 需要一个对象来接收结果
        String str1 = "hello";
        String ret1 = str1.replace('l','a');
        System.out.println(ret1);

        String ret2 = str1.replace("l","ddddddd");
        String ret3 = str1.replaceAll("l","ddddddd");
        String ret4 = str1.replaceFirst("l","ddddddd");
        System.out.println(ret2);
        System.out.println(ret3);
        System.out.println(ret4);
    }

    public static void main6(String[] args) {
        //字符串的拆分 要转的对象.split("&"); 需要一个数组来接收结果
        String str1 = "zhangsan&lisi&wangermazi&zhaowu";
//         String[] ret = str1.split("&");

//        要转的对象.split(以什么符号分割,最多分几组);
        String[] ret = str1.split("&",2);

        for(String str :ret){//数组里面的每个元素是一个 String 类型的
             System.out.println(str);
         }

        //复杂分割
        String str2 = "zhangsan=lisi&zhaowu=10";
        String[] ret2 = str2.split("&");
        //正则表达式
        String[] ret4 = str2.split("=|&");//以 = 或者 & 进行分割

        for(String x1 :ret2){//对上一次分割的结果再一次分割
            String[] ret3 = x1.split("=");
            for (String x2 :ret3){
                System.out.println(x2+" ");
            }

        }

    }

    public static void main7(String[] args) {
        //特殊字符串的分割
        String str1 = "192.168.0.1";
        //对于 . 来说需要转译
        String[] ret = str1.split("\\.");
        for(String x :ret){
            System.out.println(x);
        }
    }

    public static void main8(String[] args) {
        //字符串的截取
        String str = "abcdabcdef";
        String ret1 = str.substring(4);//从下标为 4 的地方开始取
        System.out.println(ret1);

        String ret2 = str.substring(4,6);//包括 4 不包括 6 [4，6)
        System.out.println(ret2);
    }

    public static void main(String[] args) {
        //要操作的对象a.append(要加的字符串s); 相当于 a +="s"; 的操作
        //trim 把当前字符串的左右空白（空格 换行 回车 翻页 垂直制表符...）都去掉
        String str = "  abcda bcdef  ";
        String ret1 = str.trim();
        System.out.println(ret1);
        //应用场景：前后两侧的空格在程序眼中一般是用户不小心输入的无意义的数据

    }
}
